home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / data / dora / doraonln.plp < prev    next >
Text File  |  1993-11-30  |  10KB  |  342 lines

  1. /*    共通処理の定義        */
  2. /*    通信時間記録処理    */
  3. %RECTIME{%dt    @getdt;
  4.     %time    @linetime;
  5.     %hh    time/3600;
  6.     %hh    @case(@nochar(hh),1,{im({0}|hh)},,{im(hh)});
  7.     %mm    (time-time/3600*3600)/60;
  8.     %mm    @case(@nochar(mm),1,{im({0}|mm)},,{im(mm)});
  9.     %ss    time-time/60*60;
  10.     %ss    @case(@nochar(ss),1,{im({0}|ss)},,{im(ss)});
  11.     TELNO := @head(sROAD,{/});
  12.     mkdir2(LOG2|{アクセスdat});
  13.     write(LOG2|{アクセスdat\CONNECT.DAT},
  14.         {tel no=}|TELNO|
  15.         {;  logout=}|@getchar(dt,1,10)|{ }|@getchar(dt,17,8)|
  16.         {;  time=}|hh|{h}|mm|{m}|ss|{s;\n});
  17.     };
  18. /*異常切断処理*/
  19. %AbortOff{    [CommentB]
  20.     display(CommentB);SNDMSG({okasi_f.snd});
  21.     display({\n}|NET|{-NETとの通信を強制切断します\n});
  22.     discon;RECTIME;display({\nモデムを直接切断しました\n\n});
  23.     SNDMSG({owata_f.snd});footnote({});stop
  24.     };
  25. /*切断処理 及び 切断終了表示処理*/
  26. %LogOff    {
  27.     wait(3);
  28.     %LAST
  29.     {
  30.     case    (@filechk(UP2|{\SAIGO}),
  31.         {Yes},
  32.         {type(@read(UP2|{\SAIGO}));type({\n//\n});delfile(UP2|{\SAIGO})
  33.         },
  34.         {No},
  35.         {type({//\n\n})}
  36.         )
  37.     };
  38.     %LAST1{wait(3);display(@xc({1B})|{[33m});discon;im({No});};
  39.  
  40.     footnote({終了処理中});type({O\n});DOWNSTART;
  41.     wait(Wtime2,{type({Y\n})},{かえっちゃう},{type({Y\n})}
  42.         ,{ログアウト},{type({Y\n})});
  43.     loop    ({
  44.         wait    ({3},{im({Yes})}
  45.             ,{------->},{LAST;im({Yes})}
  46.             ,{Gather},{type({//\n\n});im({Yes})}
  47.             ,{伝言板を表示しますか},{type({N\n});im({Yes})}
  48.             ,{Logoff},{im({No})}
  49.             ,{Timepass},{im({No})}
  50.             );footnote({終了処理を行います});
  51.         });
  52.     loop    ({
  53.         wait    ({3},{im({Yes})}
  54.             ,{きれた},{LAST1}
  55.             ,{切断},{LAST1}
  56.             ,{NO CARRIER},{LAST1}
  57.             ,{Disconnected},{LAST1});
  58.         });
  59.     RECTIME;SNDMSG({owata_f.snd});footnote({});DOWNSTOP;im({No})};
  60. /*    ダウンロード開始と終了の処理    */
  61. /*    LOG DOWN START        */
  62. %DOWNSTART{
  63.     case    (CHeck,
  64.         {Yes},{stoprec},{No},{CHeck:={Yes}});
  65.     var DAY1[24];var DAY2[10];mkdir2(@body(LOG2,,{\}));
  66.     DAY1:=@daylong;DAY2:=@im(@getchar(DAY1,6,2)|@getchar(DAY1,9,2));
  67.     footnote({ログを読み込み中です});receive(LOG2|NET|DAY2|{.LOG})
  68.     };
  69. /*    LOG DOWN CHECK        */
  70. %DOWNCHECK{
  71.     case    (CHeck,
  72.         {Yes},{stoprec},{No},{CHeck:={Yes}});
  73.     };
  74. /*    LOG DOWN STOP        */
  75. %DOWNSTOP{
  76.     case    (CHeck,
  77.         {Yes},{stoprec},{No},);
  78.     CHeck:={No};
  79.     setcdir(CDIR)
  80.     };
  81. /*    「ago」前の年月日を「YYYY/MM/DD」の形式で返す    */
  82. %getday{[ago]
  83.     var today[25];var YEAR[5];var MONTH[5];var DAY[5];
  84.     %plus    {[DATA]
  85.         case(@nochar(DATA),
  86.             {1},{im({0}|DATA)},
  87.             {2},{im(DATA)}
  88.             )
  89.         };
  90.     %lastmonth{case(@plus(MONTH),
  91.             {01},{im({31})},{02},{im({31})},{03},{im({28})},
  92.             {04},{im({31})},{05},{im({30})},{06},{im({31})},
  93.             {07},{im({30})},{08},{im({31})},{09},{im({31})},
  94.             {10},{im({30})},{11},{im({31})},{12},{im({30})
  95.         })};
  96.     today:=@daylong;        YEAR :=@getchar(today,1,4);
  97.     MONTH:=@getchar(today,6,2);    DAY  :=@getchar(today,9,2);
  98.     case(DAY-ago<1,{Yes},{
  99.         loop({    DAY:=DAY+@lastmonth;
  100.             case(@plus(MONTH),
  101.                 {01},{MONTH:=12; YEAR:=YEAR-1},
  102.                          ,{MONTH:=MONTH-1}
  103.             );
  104.             im(DAY-ago<1);
  105.         })});
  106.     DAY:=DAY-ago;
  107.     im(YEAR|{/}|@plus(MONTH)|{/}|@plus(DAY))};
  108. /*    Yes/Noを1/2に変換する    */
  109. %YesNo    {[YN,default];
  110.     case    (YN,{Yes},{im({1})},{No},{im({2})},,{im(default)})};
  111. /*    メニュ-への予約表示    */
  112. %YOYAKU    {
  113.     case(@filechk(UP2|{_mopres.ctl})||@filechk(UP2|{_mopdlib.ctl}),
  114.         {Yes},{yoyaku:={予約あり}},
  115.         {No},{yoyaku:={予約なし}}
  116.         );
  117.     };
  118. /*    RTBBSへの通信メニュー    */
  119. %ONLINE    {
  120.     var    access [2];var    yoyaku [8];var    updown    [2];var    am3    [2];
  121.     FREE1:={ 2};LGLOOK:={ 2};BDLIST:={ 2};DLLIST:={ 2};Am3:={};
  122.     loop    ({
  123.     case(genteiT,
  124.         {Yes},{
  125.         footnote({現在のアクセス予定NO.=}|sROAD|{.通信可能時間=}
  126.         |openT|{時~}
  127.         |closeT|{時})},
  128.         {No},{
  129.         footnote({現在のアクセス予定NO.=}|sROAD|
  130.         {.通信可能時間=24時間})}
  131.         );
  132.         SNDMSG({erande_f.snd});
  133.         %dortbbs@YesNo(DORTBBS,{1});
  134.         updown:=@case    (UPDOWN,
  135.                 {first},{im({1})},{last},{im({2})},
  136.                 {No},{im({3})},,{im({1})});
  137.         %maildel@case    (MAILDEL|MAILRED,
  138.                 {YesYes},{im({1})},{YesNo},{im({1})},
  139.                 {NoYes},{im({2})},{NoNo},{im({3})},,{im({2})});
  140.         %jisaR    @YesNo(JISAR,{1});    %free1    FREE1;
  141.         %pltmemo@YesNo(PLTmemo,{2});    %lglook    LGLOOK;
  142.         %mactiv @YesNo(MACTIV,{2});    %bdlist @YesNo(BDLIST,{2});
  143.         %dllist @YesNo(DLLIST,{2});
  144.     case    (genteiT,
  145.         {Yes}    ,{am3:={ 1}},
  146.         {Detail},{am3:={ 2}},
  147.         {No}    ,{am3:={ 3}},
  148.             ,{am3:={ 3}}
  149.         );
  150.         %doraend @case(DORAEND,
  151.                 {stopdora},{im({1})},
  152.                 {stopmop},{im({2})},
  153.                 {poweroff},{im({3})},
  154.                 {continue},{im({4})},
  155.                 ,{im({4})});
  156.         YOYAKU;
  157.         %a @plane(
  158.         {r自動通信処理(}|NET|{での処理)  /する /しない\n}|
  159.         {rアップ・ダウンロード処理(}|yoyaku|{)/最初 /最後 /しない\n}|
  160.         {r メールの処理              /既読削除/全部確認/しない\n}|
  161.         {r全員のプロフィール取得(要時間)  /する  /しない\n}|
  162.         {r伝言板を見る          /する  /しない\n}|
  163.         {r「オートパイロットでアクセス」メモをアップ  /する  /しない\n}|
  164.         {r未読ポインタ      /7日前/3日前/1日前/前 回\n}|
  165.         {rログ記録を見る             / する /しない\n}|
  166.         {r会員名簿を取得             / する /しない\n}|
  167.         {rボード一覧を見る           / する /しない\n}|
  168.         {rライブラリ一覧を見る       / する /しない\n}|
  169.         {r自由行動                   / する /しない\n}|
  170.         {r通信開始時間               /限定時刻/時刻指定/即時\n}|
  171.         {r自動通信終了後  /DORA終了/MOPT終了/電源切断/DORA継続\n}|
  172.         {s設定変更処理               /BBS設定 /各種設定/CH.選択 \n}|
  173.         {sアップ・ダウンロード指定設定処理  / アップロード  / ダウンロード \n}|
  174.         {s通信を開始する             /  開   始  /  終   了 \n},
  175.     dortbbs,updown,maildel,2,jisaR,pltmemo,4,LGLOOK,mactiv,bdlist,dllist
  176.     ,FREE1,am3,doraend);
  177.     %dortbbs@head(@getline(a,1,1),{\n});
  178.     %updown @head(@getline(a,2,1),{\n});
  179.     %maildel@head(@getline(a,3,1),{\n});
  180.     %allpro    @head(@getline(a,4,1),{\n});
  181.     %jisaR    @head(@getline(a,5,1),{\n});
  182.     %pltmemo@head(@getline(a,6,1),{\n});
  183.     %mpoint    @head(@getline(a,7,1),{\n});
  184.     LGLOOK:=@head(@getline(a,8,1),{\n});
  185.     %mactiv    @head(@getline(a,9,1),{\n});
  186.     %bdlist    @head(@getline(a,10,1),{\n});
  187.     %dllist    @head(@getline(a,11,1),{\n});
  188.     FREE1:=    @head(@getline(a,12,1),{\n});
  189.     am3:=    @head(@getline(a,13,1),{\n});
  190.     %doraend@head(@getline(a,14,1),{\n});
  191.     %setup    @head(@getline(a,15,1),{\n});
  192.     %updnset@head(@getline(a,16,1),{\n});
  193.     %ok    @head(@getline(a,17,1),{\n});
  194.         case    (dortbbs,
  195.             { 1},{DORTBBS:={Yes}},
  196.             { 2},{DORTBBS:={No}},
  197.             ,{DORTBBS:={Yes}});
  198.         case(updown,
  199.             { 1},{UPDOWN:={first}},
  200.             { 2},{UPDOWN:={last}},
  201.             { 3},{UPDOWN:={No}},
  202.             ,{UPDOWN:={first}});
  203.         case(maildel,
  204.             { 1},{MAILDEL:={Yes};MAILRED:={No}},
  205.             { 2},{MAILDEL:={No};MAILRED:={Yes}},
  206.             ,{MAILDEL:={No};MAILRED:={No}});
  207.         case(allpro,
  208.             { 1},{allPRO:={Yes}},
  209.             { 2},{allPRO:={No}},
  210.             ,{allPRO:={No}});
  211.         case    (jisaR,
  212.             { 1},{JISAR:={Yes}},
  213.             { 2},{JISAR:={No}},
  214.             ,{JISAR:={Yes}});
  215.         case    (pltmemo,
  216.             { 1},{PLTmemo:={Yes}},
  217.             { 2},{PLTmemo:={No}},
  218.             ,{PLTmemo:={Yes}});
  219.         case    (mpoint,
  220.             { 1},{mPOINT:=@im(@getchar(@getday(7),3,8))},
  221.             { 2},{mPOINT:=@im(@getchar(@getday(3),3,8))},
  222.             { 3},{mPOINT:=@im(@getchar(@getday(1),3,8))},
  223.             { 4},{mPOINT:={}});
  224.         case    (am3,
  225.             { 1},{AM3:={Yes}},
  226.             { 2},{AM3:={Detail}},
  227.             { 3},{AM3:={No}},
  228.                 ,{AM3:={No}});
  229.         case    (doraend,
  230.             { 1},{DORAEND:={stopdora}},
  231.             { 2},{DORAEND:={stopmop}},
  232.             { 3},{DORAEND:={poweroff}},
  233.             { 4},{DORAEND:={continue}});
  234.         case    (mactiv,
  235.             { 1},{MACTIV:={Yes}},
  236.             { 2},{MACTIV:={No}},
  237.         ,{MACTIV:={Yes}});
  238.             case    (bdlist,
  239.             { 1},{BDLIST:={Yes}},
  240.             { 2},{BDLIST:={No}},
  241.             ,{BDLIST:={Yes}});
  242.         case    (dllist,
  243.             { 1},{DLLIST:={Yes}},
  244.             { 2},{DLLIST:={No}},
  245.             ,{DLLIST:={Yes}});
  246.         case    (ok,
  247.             { 1},
  248.              {case    (MAILRED={No}&&MAILDEL={No}&&DORTBBS={No}&&
  249.                 UPDOWN={No},
  250.                 {Yes},    {LOGIN1},
  251.                 {No},    {ONLINE1})},
  252.             { 2},{im({No})},
  253.             ,
  254.             {
  255.             case    (setup,
  256.                 { 1},{setcdir(CDIR);#DORATGK.PLP},
  257.                 { 2},{setcdir(CDIR);#DORASET.PLP},
  258.                 { 3},{selCH});
  259.             case    (updnset,
  260.                 { 1},{setcdir(CDIR);#DORAUSET.PLP},
  261.                 { 2},{setcdir(CDIR);#DORADSET.PLP});
  262.             case    (ok={ 0}&&setup={ 0}&&updnset={ 0},
  263.                 {Yes},{selCH;im({No})},
  264.                 {No},{im({Yes})});
  265.             })})};
  266. /*    メニュ-への(有り・無し)表示    */
  267.     %Arinasi{[arinasi]
  268.         case(arinasi,
  269.             {Yes},{im({有り})},
  270.             {No},{im({無し})},,{im({無し})}
  271.             );
  272.         };
  273. /*    アクセスするチャンネル変更の処理    */
  274. %selCH{
  275.     %bestCH@case(sROAD,ROAD,{im({1})},ROAD2,{im({2})},ROAD3,{im({3})},
  276.             ROAD4,{im({4})},,{im({1})});
  277.         SNDMSG({erande_f.snd});
  278.     loop    ({
  279.     %a @plane(
  280.     {c これからアクセスする}|NET|{のチャンネルを選択して下さい。\n}|
  281.         {c ch.1の電話番号=}|ROAD|{  \n}|
  282.         {c    時間限定 (}|@Arinasi(GEN)|{)  \n}|
  283.         {c ch.2の電話番号=}|ROAD2|{   \n}|
  284.         {c    時間限定 (}|@Arinasi(GEN2)|{)  \n}|
  285.         {c ch.3の電話番号=}|ROAD3|{   \n}|
  286.         {c    時間限定 (}|@Arinasi(GEN3)|{)  \n}|
  287.         {c ch.4の電話番号=}|ROAD4|{   \n}|
  288.         {c    時間限定 (}|@Arinasi(GEN4)|{)  \n}|
  289.         {r チャンネル選択   /ch.1 /ch.2 /ch.3 /ch.4 \n}|
  290.         {s                  / 設定 / 取消 },
  291.             bestCH);
  292.         %bestCH    @head(@getline(a,1,1),{\n});
  293.         %ok    @head(@getline(a,2,1),{\n});
  294.         case(ok,
  295.         { 1},    {
  296.             case    (bestCH,
  297.                 { 1},{sROAD:=@im(ROAD);Am3:=@im(GEN)},
  298.                 { 2},{sROAD:=@im(ROAD2);Am3:=@im(GEN2)},
  299.                 { 3},{sROAD:=@im(ROAD3);Am3:=@im(GEN3)},
  300.                 { 4},{sROAD:=@im(ROAD4);Am3:=@im(GEN4)},
  301.                 ,{sROAD:=@im(ROAD)Am3:=@im(GEN)});
  302.             display(sROAD|{へのアクセスに変更しました。\n});
  303.             genteiT:=Am3;
  304.         case    (@getchar(sROAD,1,1)={/},
  305.             {Yes},{im({Yes})},
  306.             {No},{im({No})})
  307.             },
  308.         { 2},{},
  309.         ,{im({No})});
  310.         });
  311.     };
  312. /*    ログインのみの処理    */
  313. %LOGIN1    {setcdir(CDIR);#DORALGIN.PLP;
  314.     case(RETCD,{Start},
  315.     {setcdir(CDIR);#DORACHAT.PLP;DOWNSTOP;LogOff;AUTOEND},,{im({Yes})})
  316.     };
  317. /*    アップ/ダウンロード処理    */
  318. %UPDOWN1{case(@filechk(UP2|{_mopres.ctl})||@filechk(UP2|{_mopupld.ctl}),
  319.         {Yes},{setcdir(CDIR);#DORAUPLD.PLP});
  320.     case(@filechk(UP2|{_mopdlib.ctl})||@filechk(UP2|{_mopdnld.ctl}),
  321.         {Yes},{setcdir(CDIR);#DORADNLD.PLP})};
  322. /*    オンライン処理    */
  323. %ONLINE1{
  324.     setcdir(CDIR);#DORALGIN.PLP;
  325.     case(RETCD,{Start},
  326.         {case(UPDOWN,{first},{UPDOWN1});
  327.         setcdir(CDIR);#DORALOOP.PLP;
  328.         case(UPDOWN,{last},{UPDOWN1});
  329.         case(FREE1={ 1},{Yes},{setcdir(CDIR);#DORACHAT.PLP});
  330.         LogOff;wait(1);
  331.         case(DORAEND,{stopdora},{PLTSTOP},{stopmop},{stopterm},
  332.         {poweroff},{command({poff});im({No})},{continue},{im({No})})},
  333.     ,{im({Yes})});
  334.     };
  335. var    Am3    [3];    /* チャンネル選択フラグ*/
  336. var    LOGFILE    [12];    /* ログファイル名 */
  337. var    TELNO    [20];    /* 接続電話番号    */
  338. var    RETCD    [6];    /* DORALGINのリターンコード    */
  339. var    upldcntl[64];    /* アップロード制御ファイル名    */
  340. var    dnldcntl[64];    /* ダウンロード制御ファイル名    */
  341. var    CHeck     [3];    /* ログダウンチェックフラグ    */
  342. ONLINE;